package com.gtw;

import com.gtw.builder.Director;

/**
 * 建造者模式:将一个复杂对象的构建(在Builder中)和它的表示(在Director中)分离,
 * 同样的创建过程(获取的产品的内部都是统一用builder.buildProduct())
 * 可以创建不同的表示(具体不同的builder创建出的产品是不同的)
 *
 * 优点:
 *      1.封装性:客户点不必知道产品内部的组成细节
 *      2.建造者的实现类独立,容易扩展
 *      3.由于具体的建造者是独立的,因此对建造者过程细化,不会对其他模块产生影响
 * 使用场景:
 *      1.相同的方法,不同的执行顺序,产生不同结构时
 *      2.产品类中调用顺序不同,产生的能效不同
 * 注意事项:
 *      建造者模式关注的是零件类型和装配工艺(顺序),这是与工厂模式最大不同
 */
public class Client {

    public static void main(String[] args){
        Director director = new Director();
        director.getProduct();
    }
}
